package top.serms.leetcode;

/**
 * @Author: SerMs
 * @Date: 2023/10/25 10 31
 * @Email: 1839928782@qq.com
 * @Blog: https://serms.top
 **/
public class Code844 {
    public static void main(String[] args) {
        String s = "ab##", t = "b";
        System.out.println(backspaceCompare(s, t));
    }


    /**
     * @param s
     * @param t
     * @return 方式一：
     * 采用栈的数据结构，当不是#的时候压栈，是#的时候出栈
     */
    public static boolean backspaceCompare(String s, String t) {
        return backspaceCompare2(s, t);
    }

    /**
     * 双指针
     *
     * @param s
     * @param t
     * @return
     */
    public static boolean backspaceCompare2(String s, String t) {
        int i = s.length() - 1, j = t.length() - 1;
        int skipS = 0, skipT = 0;
        // 两个有一个没越界的情况就为true
        while (i >= 0 || j >= 0) {
            while (i >= 0) {
                if (s.charAt(i) == '#') {
                    skipS++;
                    i--;
                } else if (skipS > 0) {
                    skipS--;
                    i--;
                } else {
                    break;
                }
            }
            while (j >= 0) {
                if (t.charAt(j) == '#') {
                    skipT++;
                    j--;
                } else if (skipT > 0) {
                    skipT--;
                    j--;
                } else {
                    break;
                }
            }

            // 两个都没有越界的情况
            if (i >= 0 && j >= 0) {
                if (s.charAt(i) != t.charAt(j)) {
                    return false;
                }
            } else {
                if (i >= 0 || j >= 0) {
                    return false;
                }
            }
            i--;
            j--;
        }
        return true;

    }

    // 定义一个名为 build 的静态方法，接受一个字符串参数 str
    public static String build(String str) {
        // 创建一个 StringBuffer 对象，用于存储处理后的字符串
        StringBuffer buffer = new StringBuffer();
        // 使用 for-each 循环遍历字符串 str 中的每个字符 c
        for (char c : str.toCharArray()) {
            // 如果当前字符 c 不是 #，那么将其添加到 buffer 中
            if (c != '#') {
                buffer.append(c);
            } else if (buffer.length() > 0) {
                // 如果 buffer 的长度大于 0，并且当前字符 c 是 #，那么删除 buffer 中的最后一个字符
                buffer.deleteCharAt(buffer.length() - 1);
            }
        }
        // 将 buffer 中的字符连接成一个新字符串，并返回该字符串
        return buffer.toString();
    }

}
